<?php

namespace addons\faqueue\library\jobs;

use app\common\library\Log;
use think\queue\Job;

class OrderJob
{
    /**
     * @param Job $job 任务对象
     * @param $data 数据
     * 消息队列将自动调用该方法
     */
    public function fire(Job $job, $data){



        //如果任务执行失败，使用release()将任务再次丢会队列，再次执行，避免任务丢失
        if(false){
            $job->release();
        }

        //attempts() 可以获取当前任务已经尝试执行几次
        if($job->attempts() > 3){
            //假设同一个任务尝试执行了多次都失败，那么我们可能需要打印日志，甚至通知开发者人工介入
        }

        //任务执行完成，记得删除任务
        $job->delete();
    }

    //启动队列时可以指定一个任务可以尝试执行n次，如果都不成功，将自动调用该方法
    public function failed($data){

    }
}